package com.rtx.job.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.rtx.edi.model.response.EdiResponse;
import com.rtx.job.bean.dto.EdiJobConfigDto;
import com.rtx.job.bean.po.EdiJobConfig;
import com.rtx.job.service.EdiJobConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@Api(tags = {"EDI任务配置"})
@RestController
@RequestMapping("/v1/ediJobConfig")
@CrossOrigin
public class EdiJobConfigController {

    @Resource
    private EdiJobConfigService ediJobConfigService;

    /**
     * 获取EDI任务配置列表
     * @return
     */
    @ApiOperation(value = "获取EDI任务配置列表", notes = "分页获取EDI任务配置列表")
    @PostMapping("selectEdiJobConfigList")
    public EdiResponse selectEdiJobConfigList(@RequestBody EdiJobConfigDto ediJobConfigDto){
        EdiJobConfig ediJobConfig = new EdiJobConfig();
        BeanUtils.copyProperties(ediJobConfigDto,ediJobConfig);
        Page<EdiJobConfig> pageParam = new Page<>(ediJobConfigDto.getPageNum(), ediJobConfigDto.getPageSize());
        ediJobConfigService.selectEdiJobConfigList(pageParam,ediJobConfig);
        return EdiResponse.success().data("page",pageParam);
    }

    /**
     * 根据ID获取EDI任务配置
     * @param ediJobConfigDto
     * @return
     */
    @ApiOperation(value = "根据ID获取EDI任务配置", notes = "根据ID获取EDI任务配置")
    @PostMapping("selectEdiJobConfigById")
    public EdiResponse selectEdiJobConfigById(@RequestBody EdiJobConfigDto ediJobConfigDto){
        return EdiResponse.success().data("item",ediJobConfigService.getById(ediJobConfigDto.getId()));
    }

    /**
     * 根据ID删除EDI任务配置
     * @param ediJobConfigDto
     * @return
     */
    @ApiOperation(value = "根据ID删除EDI任务配置", notes = "根据ID删除EDI任务配置")
    @PostMapping("deleteEdiJobConfigById")
    public EdiResponse deleteEdiJobConfigById(@RequestBody EdiJobConfigDto ediJobConfigDto){
        return ediJobConfigService.removeById(ediJobConfigDto.getId()) ? EdiResponse.success() : EdiResponse.failed();
    }

    /**
     * 根据ID批量删除EDI任务配置
     * @param list
     * @return
     */
    @ApiOperation(value = "根据ID批量删除EDI任务配置", notes = "根据ID批量删除EDI任务配置")
    @PostMapping("deleteEdiJobConfigByIds")
    public EdiResponse deleteEdiJobConfigByIds(@RequestBody List<EdiJobConfigDto> list){
        return ediJobConfigService.removeBatchByIds(list) ? EdiResponse.success() : EdiResponse.failed();
    }

    /**
     * 新增EDI任务配置
     * @param ediJobConfigDto
     * @return
     */
    @ApiOperation(value = "新增EDI任务配置", notes = "新增EDI任务配置")
    @PostMapping("addEdiJobConfig")
    public EdiResponse addEdiJobConfig(@RequestBody EdiJobConfigDto ediJobConfigDto){
        LambdaQueryWrapper<EdiJobConfig> query = Wrappers.lambdaQuery();
        query.eq(EdiJobConfig::getJobName,ediJobConfigDto.getJobName());
        if(ediJobConfigService.getBaseMapper().exists(query)){
            return EdiResponse.failed().returnMgr("任务名已存在不允许重复创建");
        }else{
            EdiJobConfig ediJobConfig = new EdiJobConfig();
            BeanUtils.copyProperties(ediJobConfigDto,ediJobConfig,"id");
            return ediJobConfigService.save(ediJobConfig) ? EdiResponse.success() : EdiResponse.failed();
        }
    }

    /**
     * 修改EDI任务配置
     * @param ediJobConfigDto
     * @return
     */
    @ApiOperation(value = "修改EDI任务配置", notes = "修改EDI任务配置")
    @PostMapping("editEdiJobConfig")
    public EdiResponse editEdiJobConfig(@RequestBody EdiJobConfigDto ediJobConfigDto){
        EdiJobConfig ediJobConfig = new EdiJobConfig();
        BeanUtils.copyProperties(ediJobConfigDto,ediJobConfig);
        return ediJobConfigService.updateById(ediJobConfig) ? EdiResponse.success() : EdiResponse.failed();
    }
}
